package com.weijing.pretty_app.util

import android.view.View
import android.view.Window
import androidx.annotation.ColorInt
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding

object EdgeToEdgeHelper {

    /**
     * 设置状态栏和导航栏为透明，并允许内容延伸到系统栏区域
     * @param window 当前窗口
     * @param statusBarColor 状态栏颜色（可选，默认透明）
     * @param navigationBarColor 导航栏颜色（可选，默认透明）
     * @param lightStatusBar 是否启用浅色状态栏图标（可选，默认 false）
     * @param lightNavigationBar 是否启用浅色导航栏图标（可选，默认 false）
     */
    fun setupEdgeToEdge(
        window: Window,
        @ColorInt statusBarColor: Int = android.graphics.Color.TRANSPARENT,
        @ColorInt navigationBarColor: Int = android.graphics.Color.TRANSPARENT,
        lightStatusBar: Boolean = false,
        lightNavigationBar: Boolean = false
    ) {
        // 设置状态栏和导航栏颜色
        window.statusBarColor = statusBarColor
        window.navigationBarColor = navigationBarColor

        // 允许内容延伸到系统栏区域
        WindowCompat.setDecorFitsSystemWindows(window, false)

        // 设置状态栏和导航栏图标颜色
        val controller = WindowCompat.getInsetsController(window, window.decorView)
        controller.isAppearanceLightStatusBars = lightStatusBar
        controller.isAppearanceLightNavigationBars = lightNavigationBar
    }

    /**
     * 动态调整布局内边距，确保内容不会被系统栏遮挡
     * @param view 需要调整内边距的视图
     */
    fun adjustViewPadding(view: View) {
        ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.updatePadding(
                left = systemBars.left,
                top = systemBars.top,
                right = systemBars.right,
                bottom = systemBars.bottom
            )
            insets
        }
    }
}